--- import Layout from '../../../layouts/Layout.astro'; import ProductCard from '../../../components/ProductCard.astro'; import SkeletonCard from '../../../components/SkeletonCard.astro'; import Breadcrumb from '../../../components/Breadcrumb.astro'; import { getProductsFromDB, getProductCountBySize, getBrandsFromDB } from '../../../lib/products'; const { size } = Astro.params; // Validate size (EU sizes 35-50) const sizeNum = parseFloat(size!); if (isNaN(sizeNum) || sizeNum < 35 || sizeNum > 50) return Astro.redirect('/sneakers'); const url = Astro.url; const sort = (url.searchParams.get('sort') || 'popular') as 'popular' | 'newest' | 'price_asc' | 'price_desc' | 'discount'; const page = Math.max(1, parseInt(url.searchParams.get('pagina') || '1')); const perPage = 36; const products = await getProductsFromDB({ limit: perPage, offset: (page - 1) * perPage, orderBy: sort, size: size!, }); const totalCount = await getProductCountBySize(size!); const totalPages = Math.ceil(totalCount / perPage); const brands = await getBrandsFromDB(); // Get top brands for this size const topBrands = brands.slice(0, 8); const title = `Sneakers maat ${size} — ${totalCount}+ modellen vergelijken | SneakerPicks`; const description = `Alle sneakers in maat ${size}. Vergelijk ${totalCount}+ modellen van Nike, Adidas, New Balance en meer. Vind de laagste prijs in jouw maat.`; const breadcrumbs = [ { name: 'Home', url: 'https://sneakerpicks.nl/' }, { name: 'Sneakers', url: 'https://sneakerpicks.nl/sneakers' }, { name: `Maat ${size}`, url: `https://sneakerpicks.nl/sneakers/maat/${size}` }, ]; const allSizes = ['36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46']; --- 1}>